header{
package PL.practica3;
/* código de cabecera */
}
options{
	
/* opciones comunes a toda la especificación */
}

///////////////////////////////
// Analizador sintáctico para terminal
///////////////////////////////
class AnasintTerm extends Parser;
options{
/* opciones comunes a toda la especificación */
importVocab = Analex;
}

{
	private boolean final_ = false;
	public boolean getFinal (){
		return final_;
	}

}
asignacion : IDENT IGUAL (TRUE|FALSE|NUMERO|PATH|CADENA){final_ = true;};
bloqueIf: IF PARENTESIS1 (IDENT|IDENTSET) PARENTESIS2 LLAVE1 (asignacion|asignacionSet)+ LLAVE2{final_ = true;};
asignacionSet : SET IDENTSET IGUAL (TRUE|FALSE|NUMERO|CADENA|PATH) {final_ = true;};
bloqueFor : FOR PARENTESIS1 IDENT IGUAL (IDENT|NUMERO) SEPARADOR IDENT OPERADOR (IDENT|NUMERO) SEPARADOR IDENT ((MAS MAS)|(MENOS MENOS)) PARENTESIS2 LLAVE1 (asignacion|asignacionSet)* LLAVE2 {final_ = true;};
bloqueWhile : WHILE PARENTESIS1 IDENT OPERADOR (IDENT|NUMERO) PARENTESIS2 LLAVE1 (asignacion|asignacionSet)* LLAVE2 {final_ = true;};
entrada :  (asignacion | asignacionSet| bloqueIf | bloqueFor| bloqueWhile)* EOF;
